//
//  TXBaseViewController.h
//  TXKit
//
//  Created by YM on 2017/5/18.
//  Copyright © 2017年 Tincent. All rights reserved.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

#define kTableCellID                  @"TableCellID"
#define kTableHeaderID                @"TableHeaderID"
#define kTableFooterID                @"TableFooterID"

@interface TXBaseViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

/**
 *  TableView Style
 */
@property(nonatomic, assign) UITableViewStyle tableStyle;

/**
 * TableView
 *
 */
@property(nonatomic, strong) UITableView *myTableView;

/**
 *  放置LoadingView的view, LoadingView不能放置在 self.view 会造成所有按钮都点不了
 *
 */
@property(nonatomic, strong) UIView* loadingContainerView;

/**
 * 下拉刷新
 *
 */
@property(nonatomic, strong) dispatch_block_t headerRereshingBlock;

/**
 * 下拉刷新-可定制
 *
 */
-(void)setHeaderRereshingBlock:(dispatch_block_t)headerRereshingBlock class:(Class )aClass;

/**
 * 上拉加载更多
 *
 */
@property(nonatomic, strong)dispatch_block_t footerRereshingBlock;

/**
 * 上拉加载更多-可定制
 *
 */
-(void)setFooterRereshingBlock:(dispatch_block_t)footerRereshingBlock class:(Class )aClass;


/**
 * 显示loading
 *
 */
-(void)showLoading;

/**
 * 关闭loading
 *
 */
-(void)hideLoading;


/**
 * 显示空白提示页面
 *
 *  @param imageName           提示图片名字
 *  @param title                    tips内容
 *  @param buttonName         按钮名字
 *  @param topMargin           图片顶部间距
 *  @param contentView       显示view添加的对象
 */
- (id)showEmptyImage:(NSString *)imageName
               title:(NSString *)title
          buttonName:(NSString *)buttonName
           topMargin:(CGFloat )topMargin
              inView:(UIView *)contentView
         buttonBlock:(void (^)(void))onBtnBlock;

/**
 * 显示空白提示页面，图片顶部间距是默认值
 *
 *  @param imageName           提示图片名字
 *  @param title                    tips内容
 *  @param buttonName         按钮名字
 *  @param contentView       显示view添加的对象
 */
- (id)showEmptyImage:(NSString *)imageName
               title:(NSString *)title
          buttonName:(NSString *)buttonName
              inView:(UIView *)contentView
         buttonBlock:(void (^)(void))onBtnBlock;

/**
 * 隐藏空白提示页面
 *
 */
-(void)hideEmptyView;


/**
 * 手动触发下拉刷新
 *
 */
-(void)headerBeginRefreshing;

/**
 * 停止下拉刷新
 *
 */
-(void)headerEndRefreshing;

/**
 * 手动触发上拉加载更多
 *
 */
-(void)footerBeginRefreshing;

/**
 * 停止上拉加载更多
 *
 */
-(void)footerEndRefreshing;


/**
 * 显示/隐藏下拉刷新
 *
 */
-(void)setHeaderHidden:(BOOL )hidden;

/**
 * 显示/隐藏上拉加载更多
 *
 */
-(void)setFooterHidden:(BOOL )hidden;

@end

NS_ASSUME_NONNULL_END
